﻿#ifndef HALCONWINDOWWIDGET_H
#define HALCONWINDOWWIDGET_H

#include <QWidget>
#include <HalconCpp.h>

using namespace HalconCpp;
class HalconWindowWidget : public QWidget
{
    Q_OBJECT
public:
    explicit HalconWindowWidget(QWidget *parent = nullptr);

    void setImage(const HObject& img);
    void dispObj(const HObject& obj);
    void addOneObj(const HObject& obj);//这个函数不会进行window的拷贝，需要在添加完成之后调用updatewindow
    void updateWindow();
signals:
    void sigPosRGBValue(const QPoint& pos, const QColor& color);

private:
    void mousePressEvent(QMouseEvent *event);//鼠标按下事件
    void mouseMoveEvent(QMouseEvent *event);//鼠标移动事件
    void mouseReleaseEvent(QMouseEvent *event);//鼠标松开事件
    void wheelEvent(QWheelEvent *event);//鼠标滚轮事件
    void resizeEvent(QResizeEvent *event);//鼠标滚轮事件
    void scaleImage();//显示图像
    void moveWnd();//移动显示区域
    void fixedImage();
    void displayImage();

private:
    HTuple mWindow;//显示窗口
    HTuple mWindowHide;//隐式窗口
    HObject mImage;//读入初始图像
    QPoint mPointStart, mPointEnd;//鼠标在控件中的位置
    float mScale, mScaleMax, mScaleMin;//放大倍数
    bool mIsMouseDown;//鼠标按下标志位
    int mShowPartRow0, mShowPartCol0, mShowPartRow1, mShowPartCol1;//显示图像的区域
};

#endif // HALCONWINDOWWIDGET_H
